Maintaining the security of data communicated over, for example, wide or local area networks is typically of great importance to the operators or users of such networks. Data security may be enhanced within such networks and related computing systems through the use of authentication, encryption and decryption techniques.
However, conventional approaches to data encryption and decryption yielding a high level of data security may consume large amounts of one or both of computing and memory resources. As a consequence, such approaches may be infeasible in data security applications involving devices having only limited computational or data storage capabilities. For example, many proposed Internet of Things (“IoT”) devices have very limited storage, computing resources and available power. Moreover, it will be important to be able to produce various IoT devices inexpensively so as not to unduly limit the growth of new markets relying upon such devices. Accordingly, any security enhancements to such devices should be capable of being implemented with minimal effort and at low cost.
Finally, many existing methods of data encryption rely upon the same “key” to encrypt data and to later decrypt the encrypted data. If the same key is repeatedly used for encryption and decryption, an observer may be able to determine the key and decrypt the observed data. Thus, in many applications it would be advantageous to avoid repetitive use of the same encryption key.